<!doctype html>
<title>Revoking blob URL used with XMLHttpRequest</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<script>
async_test(function(t) {
    var blob = new Blob(["test"]);
    var url = URL.createObjectURL(blob);
    var xhr = new XMLHttpRequest();
    xhr.open("GET", url);

    // Revoke the object URL.  XHR should take a reference to the blob as soon as
    // it receives it in open(), so the request succeeds even though we revoke the
    // URL before calling send().
    URL.revokeObjectURL(url);

    xhr.send();

    xhr.onload = t.step_func(function() {
        assert_equals(xhr.response, "test");
        t.done();
    })
    xhr.onerror = t.step_func(function() {
        assert_unreached("Got unexpected error event");
    })
});
</script>